package com.itany.corejava.code15_stream;

import java.util.List;
import java.util.function.BinaryOperator;
import java.util.function.Consumer;
import java.util.function.Predicate;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月09日16:58
 */
public class Test04_zuoye {
    private static List<Emp> emps=Emp.getData();
    public static void main(String[] args) {
        // test01();
        // test02();
        // test03();
        // test04();
        // test05();
        // test06();
        test07();
    }

    /**
     * 1.找出所有员工,并按工资升序排序,打印出员工姓名与工资
     */
    public static void test01(){
        emps.stream()
                .sorted((a,b)->(int)(a.getSalary()-b.getSalary()))
                .forEach(e-> System.out.println("姓名:"+e.getName()+",工资:"+e.getSalary()));
    }



    // 2.找出所有研发部员工,按照工资降序排序,打印出员工姓名、工资、部门
    public static void test02(){
        emps.stream()
                .filter(e->e.getDept().getName().equals("研发部"))
                .sorted((a,b)->(int)(b.getSalary()-a.getSalary()))
                .forEach(e-> System.out.println("姓名:"+e.getName()+",工资:"+e.getSalary()+",部门:"+e.getDept().getName()));
    }

    // 3.找出员工都属于哪些部门
    public static void test03(){
        emps.stream()
                .map(e->e.getDept().getName())
                .distinct()
                .forEach(System.out::println);
    }

    // 4.输出最高工资的员工信息
    public static void test04(){
      Double max= emps.stream()
               .map(e->e.getSalary())
               .max((a,b)->(int)(a-b))
               .get();
        System.out.println("最高工资是："+max);
    }

    // 5.输出最低工资的员工信息
    public static void test05(){
        Double min= emps.stream()
                .map(e->e.getSalary())
                .min((a,b)->(int)(a-b))
                .get();
        System.out.println("最低工资是："+min);
    }

    // 6.输出员工的平均工资
    public static void test06(){
        Double sal=emps.stream()
                .map(e->e.getSalary())
                .reduce((a,b)->a+b)
                .get();
        long c=emps.stream().count();
        System.out.println("员工的平均工资为:"+sal/c);
    }

    // 7.在每一个员工姓名前加前缀itany_
    public static void test07(){
        emps.stream()
                .map(e->"itany_"+e.getName())
                .forEach(System.out::println);
    }
}
